package pe.gob.onpe.struts.action;

import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import pe.gob.onpe.ctrlNegocio.CNPrepararEleccion;
import pe.gob.onpe.pojo.BusquedaPadronSolicitantePojo;
import pe.gob.onpe.pojo.PadronElectoralSolicitantePojo;
import pe.gob.onpe.util.Funciones;
import pe.gob.onpe.util.PARAMETROS;
import pe.gob.onpe.util.ServiceLocator;

public class AdministrarPadronElectoralAction extends DispatchAction{
	
	private CNPrepararEleccion			oCNPrepararEleccion	= (CNPrepararEleccion)ServiceLocator.getInstance().getLocal(PARAMETROS.CNPrepararEleccion);
	
	public ActionForward buscarPadronElectoral(ActionMapping mapping, 
												ActionForm form,
												HttpServletRequest request, 
												HttpServletResponse response) throws Exception {
		
		System.out.println("buscar");
		
		Long	procesoElectoralId = Funciones.obtenerProcesoElectoralId(request);
		
		String dni				= request.getParameter("dni")==null?"":request.getParameter("dni");
		String apaterno			= request.getParameter("apaterno")==null?"":request.getParameter("apaterno");
		String amaterno			= request.getParameter("amaterno")==null?"":request.getParameter("amaterno");
		String nombres			= request.getParameter("nombres")==null?"":request.getParameter("nombres");
		String incosistencia	= request.getParameter("inconsistencia")==null?"":request.getParameter("inconsistencia");
		String eincosistencia	= request.getParameter("eincosistencia")==null?"":request.getParameter("eincosistencia");
		String sInicio = request.getParameter("inicio");
		
		if(sInicio == null || sInicio.equals("")){
			sInicio="1";
		}
		
		Integer inicio			= Integer.parseInt(sInicio);
		BusquedaPadronSolicitantePojo			oBusquedaPadronSolicitantePojo	= oCNPrepararEleccion.buscarPadronSolicitante(procesoElectoralId,dni,nombres,apaterno,amaterno,incosistencia,eincosistencia,inicio,PARAMETROS.PAGINACION_NRO_LINEAS);
		List<PadronElectoralSolicitantePojo>	listaPadronSolicitante			= oBusquedaPadronSolicitantePojo.getListPadronElectoralSolicitante();
		request.setAttribute("busquedaPadronSolicitantePojo", oBusquedaPadronSolicitantePojo);
		request.setAttribute("listaPadronSolicitante", listaPadronSolicitante);
		return mapping.findForward("mostrarAdministrarPadronElectoral");
	}
	
	public ActionForward registrarPadronElectoral(ActionMapping mapping, 
													ActionForm form,
													HttpServletRequest request, 
													HttpServletResponse response) throws Exception {
		
		String dni = request.getParameter("dni");
		String apaterno = request.getParameter("apaterno");
		String amaterno = request.getParameter("amaterno");
		String nombres = request.getParameter("nombres");
		String incosistencia = request.getParameter("incosistencia");
		String eincosistencia = request.getParameter("eincosistencia");

		Long procesoElectoralId = Funciones.obtenerProcesoElectoralId(request);
		oCNPrepararEleccion.registrarPadronSolicitante(procesoElectoralId, dni,apaterno,amaterno,nombres,incosistencia,eincosistencia);

		return buscarPadronElectoral(mapping, form, request, response);
	}
	
	public ActionForward modificarPadronElectoral(ActionMapping mapping, 
													ActionForm form,
													HttpServletRequest request, 
													HttpServletResponse response) throws Exception {
		
		PrintWriter	out	= response.getWriter();
		try{
			String dni				= request.getParameter("modDNI");
			String apaterno			= request.getParameter("modApellidoPaterno");
			String amaterno			= request.getParameter("modApellidoMaterno");
			String nombres			= request.getParameter("modNombre");
			String incosistencia	= request.getParameter("modIdIncosistencia");
			String eincosistencia	= request.getParameter("modeInconsistencia");
	
			Long procesoElectoralId = Funciones.obtenerProcesoElectoralId(request);
			boolean resultado = oCNPrepararEleccion.modificarPadronSolicitante(procesoElectoralId,dni,apaterno,amaterno,nombres,incosistencia,eincosistencia);

			if(resultado){
				out.write("exito");
			}else{
				out.write("error");
			}
		}catch (Exception e) {
			e.printStackTrace();
			out.write("error");
		}
		return null;//buscarPadronElectoral(mapping, form, request, response);
	}
	
	public ActionForward eliminarPadronElectoral(	
			ActionMapping mapping, 
			ActionForm form,
			HttpServletRequest request, 
			HttpServletResponse response) throws Exception {
		
		System.out.println("eliminar");
		
		String dniSeleccion = request.getParameter("dniseleccion");
		String sIdProceso = request.getParameter("idproceso");
		
		Long idProceso = Long.parseLong(sIdProceso);
		
		oCNPrepararEleccion.eliminarPadronSolicitante(idProceso, dniSeleccion);

		return mapping.findForward("mostrarAdministrarPadronElectoral");
	}
}